home *** CD-ROM | disk | FTP | other *** search
/ FishMarket 1.0 / FishMarket v1.0.iso / fishies / 076-100 / disk_098 / backup / stack.c < prev   
C/C++ Source or Header  |  1992-05-06  |  848b  |  51 lines

  1. #include <stdio.h>
  2.  
  3. extern char *malloc ();
  4. extern char *strsave ();
  5.  
  6.  
  7. struct stack_st {
  8.     struct stack_st *next;
  9.     char *filename;
  10. };
  11.  
  12.  
  13. int
  14. push ( stack , filename )
  15. struct stack_st **stack;
  16. char *filename;
  17. {
  18.     struct stack_st *p , **pp;
  19.  
  20.     p = (struct stack_st *) malloc ( sizeof ( struct stack_st ) );
  21.     if ( p == NULL )
  22.         return ( 0 );
  23.     p->filename = strsave ( filename );
  24.     if ( p->filename == NULL ) {
  25.         free ( p );
  26.         return ( 0 );
  27.     }
  28.     p->next = NULL;
  29.     for ( pp = stack; *pp != NULL; pp = &(*pp)->next ) ;
  30.     *pp = p;
  31.     return ( 1 );
  32. }
  33.  
  34.  
  35. char *
  36. pop ( stack )
  37. struct stack_st **stack;
  38. {
  39.     char *filename;
  40.     struct stack_st *p , **pp;
  41.     static char buf[ 512 ];
  42.  
  43.     if ( *stack == NULL )
  44.         return ( NULL );
  45.     for ( pp = stack; (*pp)->next != NULL; pp = &(*pp)->next ) ;
  46.     strcpy ( buf , (*pp)->filename );
  47.     free ( (*pp)->next );
  48.     *pp = NULL;
  49.     return ( buf );
  50. }
  51.